Class inheritance
affects which methods are called in IDL. An object of a class
which inherits methods from one or more superclasses can override
that method by defining its own method of the same name, extend
the method by calling the method(s) of its superclass(es) in its
version, or inherit the method directly by making no
modifications. IDLWAVE examines class definitions during
completion and routine information display, and records all
inheritance information it finds. This information is displayed
if appropriate with the calling sequence for methods (see
Routine Info), as
long as variable idlwave-support-inheritance is
non-nil.
In many class methods, keyword inheritance
(_EXTRA and _REF_EXTRA) is used
hand-in-hand with class inheritance and method overriding. E.g.,
in a SetProperty method, this technique allows a
single call obj->SetProperty to set properties up
the entire class inheritance chain. This is often referred to as
chaining, and is characterized by chained method calls
like self->MySuperClass::SetProperty,_EXTRA=e
.
IDLWAVE can accommodate this special synergy between class and
keyword inheritance: if _EXTRA or
_REF_EXTRA is detected among a method's keyword
parameters, all keywords of superclass versions of the method
being considered can be included in completion. There is of
course no guarantee that this type of keyword chaining actually
occurs, but for some methods it's a very convenient assumption.
The variable idlwave-keyword-class-inheritance can
be used to configure which methods have keyword inheritance
treated in this simple, class-driven way. By default, only
Init and (Get|Set)Property are. The
completion buffer will label keywords based on their originating
class.